/*
 * ChessMan.h
 *
 *  Created on: 18 Jan 2011
 *      Author: sinan
 */

#ifndef CHESSMAN_H_
#define CHESSMAN_H_

///#include "ChessTable.h"
#include <vector>
using namespace std;

enum ChessManVisitableCoordinateType {
	ChessManVisitableCoordinateType_Attack = 0,
	ChessManVisitableCoordinateType_NoAttack,
	ChessManVisitableCoordinateType_Itself
};

struct ChessTableCoordinate {
public:
	int x;
	int y;
};

struct VisitableCoordinate {
public:
	ChessTableCoordinate ctCoord;
	ChessManVisitableCoordinateType coordType;
};

enum ChessManType {

	ChessManType_NULL = 0,
	ChessManType_Pawn,
	ChessManType_Bishop,
	ChessManType_Knight,
	ChessManType_Rook,
	ChessManType_Queen,
	ChessManType_King
};

enum ChessManColor {

	ChessManColor_NULL = 0, ChessManColor_White, ChessManColor_Black
};

class ChessMan {
public:
	ChessManType type;
	ChessManColor color;
	bool isAlive;
	int value;


	virtual vector<VisitableCoordinate> GetMovementList(
			ChessTableCoordinate Coordinate);
	ChessMan();
	~ChessMan();
};

#endif /* CHESSMAN_H_ */
